//package org.convallaria.system.biz.controller.other;
//
//import io.swagger.v3.oas.annotations.Operation;
//import io.swagger.v3.oas.annotations.tags.Tag;
//import lombok.RequiredArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.convallaria.framework.security.annotation.RequiresPermissions;
//import org.convallaria.system.biz.service.LoginAttemptService;
//import org.convallaria.system.biz.service.SecurityAuditService;
//import org.convallaria.system.biz.service.TokenBlacklistService;
//import org.convallaria.system.biz.service.PasswordPolicyService;
//import org.convallaria.system.biz.service.SecurityConfigService;
//import org.convallaria.system.biz.service.sys.SysLoginLogService;
//import org.convallaria.system.biz.util.SecurityTestUtils;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.time.LocalDateTime;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
///**
// * 安全监控控制器
// * 提供安全相关的监控和统计信息
// *
// * @author convallaria
// * @since 1.0.0
// */
//@Tag(name = "安全监控", description = "安全监控相关接口")
//@RestController
//@RequestMapping("/security/monitor")
//@RequiredArgsConstructor
//@Slf4j
//public class SecurityMonitorController {
//
//    private final SecurityAuditService securityAuditService;
//    private final TokenBlacklistService tokenBlacklistService;
//    private final LoginAttemptService loginAttemptService;
//    private final PasswordPolicyService passwordPolicyService;
//    private final SecurityConfigService securityConfigService;
//    private final SysLoginLogService sysLoginLogService;
//
//    @RequiresPermissions("system:security:monitor")
//    @Operation(summary = "获取安全概览", description = "获取系统安全状态概览")
//    @GetMapping("/overview")
//    public Map<String, Object> getSecurityOverview() {
//        Map<String, Object> overview = new HashMap<>();
//
//        // Token黑名单统计
//        TokenBlacklistService.BlacklistStatistics tokenStats = tokenBlacklistService.getStatistics();
//        overview.put("tokenBlacklist", Map.of(
//            "totalCount", tokenStats.getTotalCount(),
//            "activeCount", tokenStats.getActiveCount(),
//            "expiredCount", tokenStats.getExpiredCount(),
//            "lastCleanTime", tokenStats.getLastCleanTime()
//        ));
//
//        // 系统状态
//        overview.put("systemStatus", Map.of(
//            "timestamp", LocalDateTime.now(),
//            "status", "NORMAL"
//        ));
//
//        return overview;
//    }
//
//    @RequiresPermissions("system:security:monitor")
//    @Operation(summary = "获取登录统计", description = "获取登录相关的统计信息")
//    @GetMapping("/login-stats")
//    public Map<String, Object> getLoginStats(@RequestParam(defaultValue = "7") int days) {
//        Map<String, Object> stats = new HashMap<>();
//
//        try {
//            // 计算时间范围
//            LocalDateTime startTime = LocalDateTime.now().minusDays(days);
//            LocalDateTime endTime = LocalDateTime.now();
//
//            // 通过业务层统计登录数据
//            Long successCount = sysLoginLogService.countLoginLogs(null, startTime, endTime, "0");
//            Long failureCount = sysLoginLogService.countLoginLogs(null, startTime, endTime, "1");
//            Long uniqueUsers = sysLoginLogService.countUniqueUsers(startTime, endTime);
//            Long uniqueIps = sysLoginLogService.countUniqueIps(startTime, endTime);
//
//            stats.put("period", days + "天");
//            stats.put("successCount", successCount != null ? successCount : 0);
//            stats.put("failureCount", failureCount != null ? failureCount : 0);
//            stats.put("uniqueUsers", uniqueUsers != null ? uniqueUsers : 0);
//            stats.put("uniqueIps", uniqueIps != null ? uniqueIps : 0);
//        } catch (Exception e) {
//            log.error("获取登录统计失败", e);
//            stats.put("period", days + "天");
//            stats.put("successCount", 0);
//            stats.put("failureCount", 0);
//            stats.put("uniqueUsers", 0);
//            stats.put("uniqueIps", 0);
//        }
//
//        return stats;
//    }
//
//    @RequiresPermissions("system:security:monitor")
//    @Operation(summary = "获取安全事件统计", description = "获取安全事件统计信息")
//    @GetMapping("/security-events")
//    public Map<String, Object> getSecurityEvents(@RequestParam(defaultValue = "24") int hours) {
//        Map<String, Object> events = new HashMap<>();
//
//        // TODO: 实现安全事件统计逻辑
//        // 这里可以统计最近几小时的安全事件类型分布
//
//        events.put("period", hours + "小时");
//        events.put("totalEvents", 0);
//        events.put("eventTypes", Map.of(
//            "LOGIN_SUCCESS", 0,
//            "LOGIN_FAILURE", 0,
//            "PASSWORD_CHANGE", 0,
//            "PERMISSION_CHANGE", 0,
//            "SECURITY_VIOLATION", 0
//        ));
//
//        return events;
//    }
//
//    @RequiresPermissions("system:security:monitor")
//    @Operation(summary = "获取风险用户", description = "获取存在安全风险的用户列表")
//    @GetMapping("/risk-users")
//    public Map<String, Object> getRiskUsers() {
//        Map<String, Object> riskUsers = new HashMap<>();
//
//        // TODO: 实现风险用户检测逻辑
//        // 这里可以检测频繁登录失败、异常登录行为等用户
//
//        riskUsers.put("totalCount", 0);
//        riskUsers.put("users", new Object[0]);
//
//        return riskUsers;
//    }
//
//    @RequiresPermissions("system:security:monitor")
//    @Operation(summary = "获取异常IP", description = "获取存在异常行为的IP地址")
//    @GetMapping("/suspicious-ips")
//    public Map<String, Object> getSuspiciousIps() {
//        Map<String, Object> suspiciousIps = new HashMap<>();
//
//        // TODO: 实现异常IP检测逻辑
//        // 这里可以检测频繁登录失败、来自异常地理位置的IP等
//
//        suspiciousIps.put("totalCount", 0);
//        suspiciousIps.put("ips", new Object[0]);
//
//        return suspiciousIps;
//    }
//
//    @RequiresPermissions("system:security:monitor")
//    @Operation(summary = "获取安全配置状态", description = "获取当前安全配置的启用状态")
//    @GetMapping("/config-status")
//    public Map<String, Object> getConfigStatus() {
//        Map<String, Object> configStatus = new HashMap<>();
//
//        // TODO: 从SecurityConfigService获取配置状态
//        configStatus.put("captchaEnabled", true);
//        configStatus.put("loginLimitEnabled", true);
//        configStatus.put("passwordPolicyEnabled", true);
//        configStatus.put("auditLogEnabled", true);
//        configStatus.put("tokenBlacklistEnabled", true);
//        configStatus.put("deviceFingerprintEnabled", false);
//        configStatus.put("behaviorAnalysisEnabled", false);
//
//        return configStatus;
//    }
//
//    @RequiresPermissions("system:security:test")
//    @Operation(summary = "测试密码策略", description = "测试密码策略的验证功能")
//    @GetMapping("/test/password-policy")
//    public List<SecurityTestUtils.PasswordTestResult> testPasswordPolicy() {
//        return SecurityTestUtils.testPasswordPolicy(passwordPolicyService);
//    }
//
//    @RequiresPermissions("system:security:test")
//    @Operation(summary = "测试安全配置", description = "测试当前安全配置状态")
//    @GetMapping("/test/security-config")
//    public SecurityTestUtils.SecurityConfigTestResult testSecurityConfig() {
//        return SecurityTestUtils.testSecurityConfig(securityConfigService);
//    }
//
//    @RequiresPermissions("system:security:test")
//    @Operation(summary = "生成安全报告", description = "生成完整的安全测试报告")
//    @GetMapping("/test/security-report")
//    public SecurityTestUtils.SecurityReport generateSecurityReport() {
//        return SecurityTestUtils.generateSecurityReport(passwordPolicyService, securityConfigService);
//    }
//}
